async function createSandbox() {
  // 创建一个新的 ShadowRealm
  const realm = new ShadowRealm();

  // 定义一个通信桥梁函数，用于在沙箱和主应用之间传递消息
  const bridgeFunction = realm.evaluate(`
      (function (sendMessageToHost) {
        // 沙箱内的代码
  
        // 定义一个变量
        let sandboxVar = 'hello from ShadowRealm';
  
        // 定义一个函数，通过桥梁发送消息给主应用
        function sendMessage(message) {
          sendMessageToHost(message);
        }
  
        // 主应用可以调用这个函数，来获取沙箱内的数据
        function getSandboxVar() {
          return sandboxVar;
        }
  
        // 主应用可以通过这个函数向沙箱发送消息
        function receiveMessageFromHost(message) {
          console.log('Received from host:', message);
          sandboxVar = message; // 更新沙箱内的变量
        }
  
        // 返回一个对象，包含沙箱内的两个函数
        return {
          getSandboxVar,
          sendMessage,
          receiveMessageFromHost
        };
      })
    `);

  // 定义一个函数，当从沙箱接收到消息时调用
  function onMessageFromSandbox(message) {
    console.log('Message from sandbox:', message);
  }

  // 创建沙箱内函数的桥梁
  const sandboxAPI = bridgeFunction(onMessageFromSandbox);

  // 主应用向沙箱发送消息
  sandboxAPI.receiveMessageFromHost('hello from host');

  // 从沙箱获取数据
  console.log('Sandbox variable:', sandboxAPI.getSandboxVar());

  // 从沙箱发送消息到主应用
  sandboxAPI.sendMessage('This is a message from the sandbox.');
}

// 调用创建沙箱的函数
createSandbox();
